package org.inspiration.dudu.user.service;

import org.inspiration.dudu.user.model.dto.UserFavoriteDTO;
import org.inspiration.dudu.user.model.entity.UserFavoriteEntity;

import java.util.List;

/**
 * 用户收藏服务接口
 */
public interface UserFavoriteService {
    /**
     * 创建用户收藏
     * 
     * @param userFavoriteDTO 用户收藏数据传输对象
     */
    void createUserFavorite(UserFavoriteDTO userFavoriteDTO);

    /**
     * 删除用户收藏
     * 
     * @param userFavoriteDTO 用户收藏数据传输对象
     */
    void deleteUserFavorite(UserFavoriteDTO userFavoriteDTO);

    /**
     * 检查内容是否为用户的收藏
     * 
     * @param userId 用户ID
     * @param contentId 内容ID
     * @return 如果是收藏返回true，否则返回false
     */
    Boolean isFavorite(Long userId, String contentId);

    /**
     * 获取用户的收藏列表
     * 
     * @param userId 用户ID
     * @param favoriteFolderId 收藏夹ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 用户收藏实体列表
     */
    List<UserFavoriteEntity> getUserFavoriteByUserId(Long userId, Long favoriteFolderId, Integer pageNum, Integer pageSize);

    /**
     * 将用户收藏数据传输对象转换为实体
     * 
     * @param userFavoriteDTO 用户收藏数据传输对象
     * @return 用户收藏实体
     */
    UserFavoriteEntity transToEntity(UserFavoriteDTO userFavoriteDTO);

    /**
     * 检查指定文件夹是否为用户的收藏
     * 
     * @param userId 用户ID
     * @param contentId 内容ID
     * @param folderId 文件夹ID
     * @return 如果是收藏返回true，否则返回false
     */
    Boolean isFolderFavorite(Long userId, String contentId, Long folderId);
}
